package org.wx.io.objpool;

import io.netty.util.Recycler;

public class RecyclerTest {
    // 创建了一个 Recycler<User> 对象
    private static Recycler<User> userRecycler = new Recycler<User>() {
        @Override
        // 实现了 newObject 方法
        protected User newObject(Handle<User> handle) {
            return new User(handle);
        }
    };
    // 自定义的 User 对象
    static class User{
        // 保存了 userRecycler 的 handle
        Recycler.Handle<User> handle;
        User(Recycler.Handle<User> handle){
            this.handle = handle;
        }
        // 通过 handle 回收对象
        void recycle(){
            handle.recycle(this);
        }
    }

    public static void main(String[] args){
        // 第一个 User 对象
        User user1 = userRecycler.get();
        // 对象回收
        user1.recycle();
        // 第二个 User 对象
        User user2 = userRecycler.get();
        // 判断两个 User 对象是否是同一个
        System.out.println(user1==user2);
    }
}
